fordítás
Re: fordítás
Köszönöm!
Nos, tanulunk tovább.
Nos, tanulunk tovább.

Re: fordítás
Szívesen mindenkinek!
Viszont a new2dir szkript valamiért nem másolta át a szimbolikus linkeket a dir2pet-hez tartozó mappába, így a videóban készült pet is patch-el működne...
Ez azt jelenti a gyakorlatban, hogy ahogy az LX7 SP1-ben cseréltem, úgy itt is cserélni kell az előbb említett 2 szkriptet a bionic-ban is. Úgyhogy újrafordítom az ffmpeg-et majd. Meg ha jól rémlik a konfigurálásnál kifelejtettem az X11grab -hez tartozó kapcsolót. Viszont amennyiben sikerrel járok az új pettel, azt fogom tenni a jelenlegiek helyére.
majd ezt a hsz-emet szerkesztve beillesztem az új konfig sort később.
Frissítve!
Na újrafordítottam az ffmpeget és meg van mi a hiba... az install folyamatban van egy utasítás ami a rendszerbe hozza létre a szimbolikus linkeket. Na most ezt nem értelmezi a new2dir, ez nem feltétlen a szkript hiányossága, hiszen az csak másol... szóval nem az a probléma, hogy nem másolja át a szimbolikus linkeket, hanem parancs hozza létre a rendszerbe az install folyamán. Szóval a sourceforge -on levő patch pótolja őket. Így minden a helyén van. Tesztelést, visszajelzést örömmel fogadok - fogadunk!
A konfig továbbra is jó, ha nem akarunk sdl2-t az ffmpeghez, akkor az utolsó kapcsolót hagyjuk el:
Viszont a new2dir szkript valamiért nem másolta át a szimbolikus linkeket a dir2pet-hez tartozó mappába, így a videóban készült pet is patch-el működne...
Ez azt jelenti a gyakorlatban, hogy ahogy az LX7 SP1-ben cseréltem, úgy itt is cserélni kell az előbb említett 2 szkriptet a bionic-ban is. Úgyhogy újrafordítom az ffmpeg-et majd. Meg ha jól rémlik a konfigurálásnál kifelejtettem az X11grab -hez tartozó kapcsolót. Viszont amennyiben sikerrel járok az új pettel, azt fogom tenni a jelenlegiek helyére.
majd ezt a hsz-emet szerkesztve beillesztem az új konfig sort később.
Frissítve!
Na újrafordítottam az ffmpeget és meg van mi a hiba... az install folyamatban van egy utasítás ami a rendszerbe hozza létre a szimbolikus linkeket. Na most ezt nem értelmezi a new2dir, ez nem feltétlen a szkript hiányossága, hiszen az csak másol... szóval nem az a probléma, hogy nem másolja át a szimbolikus linkeket, hanem parancs hozza létre a rendszerbe az install folyamán. Szóval a sourceforge -on levő patch pótolja őket. Így minden a helyén van. Tesztelést, visszajelzést örömmel fogadok - fogadunk!
A konfig továbbra is jó, ha nem akarunk sdl2-t az ffmpeghez, akkor az utolsó kapcsolót hagyjuk el:
Kód: Egész kijelölése
./configure --prefix=/usr --enable-shared --enable-gpl --enable-nonfree --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libdc1394 --enable-libfreetype --enable-libmp3lame --enable-libspeex --enable-libvorbis --enable-libvpx --enable-libx264 --enable-libxvid --enable-zlib --enable-postproc --disable-debug --enable-bzlib --enable-version3 --enable-libtheora --enable-swscale --enable-libcdio --enable-libxvid --disable-libcaca --enable-fontconfig --enable-opengl --enable-openssl --enable-ffplay --enable-sdl2
Re: fordítás
ticoo1 kolléga kérésére fordítottam AbiWord 3.0.4 -et.
Ha most le kéne írnom hogyan kell fordítani - hát ...
Ha most le kéne írnom hogyan kell fordítani - hát ...
Re: fordítás
No, hát ez a nap is eljött...
Ha erről most videót kéne készítenem, valószínű kifüstölném a gépet a helyéből, úgyhogy egyelőre marad a beharangozó. De hol is kezdjem?
A köszönömökkel:
Köszönöm ticoo1-nek, hogy segít és kitartóan munkálkodik csiszol, fúr-farag a rendszereken, köszönöm willy36-nak is, hogy vállalja a teszteléseket és ha kell ő is javaslatokat tesz, köszönöm Skaminak is, hogy bátorít - róla példát véve sose adjam fel, ne zuhanjak össze és haladjak előre. Köszönöm KuLuSznak aki nélkül már kb a 13. próbálkozásnál járnék hiába és köszönöm az angol irc csatornán segítőknek, hogy közbenjárásukkal végül megalkothattam a stabil 5.7.7 -es jelen pillanatban 32bit pae kernelt a NOSpup-hoz. És végül de nem utolsó sorban mindenkinek köszönöm, akik bármely módon hozzájárulnak ahhoz, hogy a puppy használhatóbb legyen ahogy felette is jár - kel az idő és őrli annak vasfoga. Nagyon hosszú utat jártunk be mindannyian fejlesztők és felhasználók egyaránt. Vannak és még biztos lesznek is hullámvölgyek de a sikerekről is érdemes nyilatkozni mint most ez a kernel fordítás. Ahogy annyiszor mondtam már: sosem a fordítás a legnehezebb ebben, hanem a konfigurálás - az előkészületek de kétség nem fér hozzá, hogy a legizzasztóbb az amikor merev tekintettel figyeljük egy-egy fordítás alkalmával a futó terminált. Később szolgálok részletekkel és feltöltöm majd a kernelt a sourceforge-ra annak további vonatkozásaival. Addig is íme:
Kezdeti nehézségek:
Videó:
https://youtu.be/vBzlCbmvInc
Ha erről most videót kéne készítenem, valószínű kifüstölném a gépet a helyéből, úgyhogy egyelőre marad a beharangozó. De hol is kezdjem?
A köszönömökkel:
Köszönöm ticoo1-nek, hogy segít és kitartóan munkálkodik csiszol, fúr-farag a rendszereken, köszönöm willy36-nak is, hogy vállalja a teszteléseket és ha kell ő is javaslatokat tesz, köszönöm Skaminak is, hogy bátorít - róla példát véve sose adjam fel, ne zuhanjak össze és haladjak előre. Köszönöm KuLuSznak aki nélkül már kb a 13. próbálkozásnál járnék hiába és köszönöm az angol irc csatornán segítőknek, hogy közbenjárásukkal végül megalkothattam a stabil 5.7.7 -es jelen pillanatban 32bit pae kernelt a NOSpup-hoz. És végül de nem utolsó sorban mindenkinek köszönöm, akik bármely módon hozzájárulnak ahhoz, hogy a puppy használhatóbb legyen ahogy felette is jár - kel az idő és őrli annak vasfoga. Nagyon hosszú utat jártunk be mindannyian fejlesztők és felhasználók egyaránt. Vannak és még biztos lesznek is hullámvölgyek de a sikerekről is érdemes nyilatkozni mint most ez a kernel fordítás. Ahogy annyiszor mondtam már: sosem a fordítás a legnehezebb ebben, hanem a konfigurálás - az előkészületek de kétség nem fér hozzá, hogy a legizzasztóbb az amikor merev tekintettel figyeljük egy-egy fordítás alkalmával a futó terminált. Később szolgálok részletekkel és feltöltöm majd a kernelt a sourceforge-ra annak további vonatkozásaival. Addig is íme:
Kezdeti nehézségek:
Videó:
https://youtu.be/vBzlCbmvInc
Re: fordítás
Üdv!
Nem kimondott fordítás a téma, inkább a C nyelv elsajátításának megpróbálása... (gondoltam miért ne kezdhetném a mélyvízzel...) na persze Skami és a többiek nélkül nem mentem volna ismét semmire.
Na de lássuk:
teszt.c
Kép (itt cukix):
Mi értelme?
kell egy kacsa.txt aminek első 2 sorába megadjuk a lejátszókat. De bármire átírható itt most kacsa.txt. Az első sor a $PATH eléréssel megadott simán fofi8 mondjuk, a második sor meg a teljes útvonallal lehet pl.: /usr/bin/ffplay vagy ./valami.sh
szintaxisra figyeljünk!
Az első sor lejátszója az m3u és m3u8 valamint xspf fájlokat kapja inputra.
A 2. sor a minden más egyebet kapja inputnak.
Ez arra jó, hogyha pl ezt a teszt binárist a txt-jével berakjuk a /root/-ba puppyn, akkor azt meg hozzáadhatjuk a default applications chooser -be audio lejátszónak /root/teszt. és akkor azzal ha mp4-re kattintunk ffplay vagy vlc a kép alapján, ha playlistre akkor fofi8. Persze fofi8 -nak kell lennie a /root/my-applications/bin -ben vagy valamelyik $PATH útvonalban.
A következő bináris a gtk-t használja 2 gombot jelenít meg az eljárás azonos, csak gombhoz rendelve és csak megnyitja a benne foglalt fofi8 illetve s4fofi8p_v1_beta.sh -t.
íme:
cukor.c
fordításhoz:
Ennek meg az volt az értelme, hogy kipróbáljak egy GTK megjelenést, C -vel.
Kép:
Nem kimondott fordítás a téma, inkább a C nyelv elsajátításának megpróbálása... (gondoltam miért ne kezdhetném a mélyvízzel...) na persze Skami és a többiek nélkül nem mentem volna ismét semmire.
Na de lássuk:
teszt.c
Kód: Egész kijelölése
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <string.h>
#define MAXC 1024 /* if you need a constant, #define one (or more) */
#define NPTRS 2 /* initial no. of pointers to allocate (lines) */
int main (int argc, char **argv) {
int found = 0;
char *p = strrchr(argv[1], '.');
if (p){
char buf[MAXC], /* fixed buffer to read each line */
**lines = NULL; /* pointer to pointer to hold collection of lines */
size_t nptrs = NPTRS, /* number of pointers available */
used = 0; /* number of pointers used */
/* use filename provided as 1st argument (stdin by default) */
FILE *fp = argc > 1 ? fopen ("kacsa.txt", "r") : stdin;
if (!fp) { /* validate file open for reading */
printf("%s\n", "kacsa.txt needed next to this binary: 1st line: PATH program, 2nd line: FULLPATH program!");
perror ("file open failed");
return 1;
}
/* allocate/validate block holding initial nptrs pointers */
if ((lines = malloc (nptrs * sizeof *lines)) == NULL) {
perror ("malloc-lines");
exit (EXIT_FAILURE);
}
while (fgets (buf, MAXC, fp)) { /* read each line into buf */
size_t len;
buf[(len = strcspn (buf, "\n"))] = 0; /* trim \n, save length */
if (used == nptrs) { /* check if realloc of lines needed */
/* always realloc using temporary pointer (doubling no. of pointers) */
void *tmp = realloc (lines, (2 * nptrs) * sizeof *lines);
if (!tmp) { /* validate reallocation */
perror ("realloc-lines");
break; /* don't exit, lines still good */
}
lines = tmp; /* assign reallocated block to lines */
nptrs *= 2; /* update no. of pointers allocatd */
/* (optionally) zero all newly allocated memory here */
}
/* allocate/validate storage for line */
if (!(lines[used] = malloc (len + 1))) {
perror ("malloc-lines[used]");
break;
}
memcpy (lines[used], buf, len + 1); /* copy line from buf to lines[used] */
used += 1; /* increment used pointer count */
}
/* (optionally) realloc to 'used' pointers to size no. of pointers exactly here */
if (fp != stdin) /* close file if not stdin */
fclose (fp);
/* use lines as needed (simply outputting here) */
/*
for (size_t i = 0; i < used; i++) {
printf ("line[%3zu] : %s\n", i, lines[i]);
free (lines[i]);
}
*/
//printf("%d\n",found);
if(strcmp(p, ".m3u") == 0 || strcmp(p, ".m3u8") == 0 || strcmp(p, ".xspf") == 0){
found = 1;
printf("%d\n",found);
} else {
found = 0;
printf("%d\n",found);
}
if(found == 1){
//printf("%s\n", lines[0]);
char *programName = lines[0];
char *arg1 = "";
execlp(programName, programName, argv[1], NULL);
} else {
char *binaryPath = lines[1];
char *arg1i = "";
execl(binaryPath, binaryPath, argv[1], NULL);
}
free (lines); /* free pointers when done */
}
return 0;
}
Kód: Egész kijelölése
gcc teszt.c -o teszt
kell egy kacsa.txt aminek első 2 sorába megadjuk a lejátszókat. De bármire átírható itt most kacsa.txt. Az első sor a $PATH eléréssel megadott simán fofi8 mondjuk, a második sor meg a teljes útvonallal lehet pl.: /usr/bin/ffplay vagy ./valami.sh
szintaxisra figyeljünk!
Az első sor lejátszója az m3u és m3u8 valamint xspf fájlokat kapja inputra.
A 2. sor a minden más egyebet kapja inputnak.
Ez arra jó, hogyha pl ezt a teszt binárist a txt-jével berakjuk a /root/-ba puppyn, akkor azt meg hozzáadhatjuk a default applications chooser -be audio lejátszónak /root/teszt. és akkor azzal ha mp4-re kattintunk ffplay vagy vlc a kép alapján, ha playlistre akkor fofi8. Persze fofi8 -nak kell lennie a /root/my-applications/bin -ben vagy valamelyik $PATH útvonalban.
A következő bináris a gtk-t használja 2 gombot jelenít meg az eljárás azonos, csak gombhoz rendelve és csak megnyitja a benne foglalt fofi8 illetve s4fofi8p_v1_beta.sh -t.
íme:
cukor.c
Kód: Egész kijelölése
#include <gtk/gtk.h>
#include <stdlib.h>
#include <unistd.h>
static int counter = 0;
void greet(GtkWidget* widget, gpointer data)
{
// printf equivalent in GTK+
g_print("Welcome to GTK\n");
g_print("%s clicked %d times\n",
(char*)data, ++counter);
//int status = system("./fofi8");
char *programName = "fofi8";
char *arg1 = "";
char *arg2 = "";
execlp(programName, programName, arg1, arg2, NULL);
}
void greeti(GtkWidget* widget, gpointer data)
{
// printf equivalent in GTK+
g_print("Welcome to GTKi\n");
g_print("%s clicked %d times\n",
(char*)data, ++counter);
//int status = system("./fofi8");
char *binaryPath = "./s4fofi8p_v1_beta.sh";
char *arg1i = "";
char *arg2i = "";
execl(binaryPath, binaryPath, arg1i, arg2i, NULL);
}
/*
to compile:
gcc cukor.c -o cukorc `pkg-config --cflags --libs gtk+-2.0`
*/
void destroy(GtkWidget* widget, gpointer data)
{
gtk_main_quit();
}
int main(int argc, char* argv[])
{
GtkWidget* window;
GtkWidget* vbox;
GtkWidget* button;
GtkWidget* buttoni;
gtk_init(&argc, &argv);
window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
gtk_window_set_position(GTK_WINDOW(window), GTK_WIN_POS_CENTER);
gtk_window_set_default_size(GTK_WINDOW(window), 230, 250);
gtk_window_set_title(GTK_WINDOW(window), "cukorka");
gtk_container_set_border_width(GTK_CONTAINER(window), 5);
g_signal_connect(window, "destroy",
G_CALLBACK(destroy), NULL);
/* Let's set the border width of the window to 20.
* You may play with the value and see the
* difference. */
vbox = gtk_vbox_new(TRUE, 1);
gtk_container_add(GTK_CONTAINER(window), vbox);
button = gtk_button_new_with_label("fofi8");
buttoni = gtk_button_new_with_label("s4fofi8p_v1_beta.sh");
g_signal_connect(GTK_OBJECT(button),
"clicked", G_CALLBACK(greet),
"button");
g_signal_connect(GTK_OBJECT(buttoni),
"clicked", G_CALLBACK(greeti),
"buttoni");
gtk_box_pack_start(GTK_BOX(vbox), button, TRUE, TRUE, 0);
gtk_box_pack_start(GTK_BOX(vbox), buttoni, TRUE, TRUE, 0);
gtk_widget_show_all(window);
gtk_main();
return 0;
}
Kód: Egész kijelölése
gcc cukor.c -o cukorc `pkg-config --cflags --libs gtk+-2.0`
Ennek meg az volt az értelme, hogy kipróbáljak egy GTK megjelenést, C -vel.
Kép:
Re: fordítás
Üdv!
Kicsit okoskodtam a C forrásán a kacsa.txt -s binárisnak, az volt a célom, hogy bárhol van a bináris és bárhonnan hívom meg, a mindig mellette lévő kacsa.txt-t lássa!
Ennek okán a C forrása a következőre módosult:
teszt.c
Fordításhoz szintén:
kacsa.txt tartalma:
Minden kedves C iránt érdeklődőknek, hasznos időtöltést - tanulást kívánok!
Kicsit okoskodtam a C forrásán a kacsa.txt -s binárisnak, az volt a célom, hogy bárhol van a bináris és bárhonnan hívom meg, a mindig mellette lévő kacsa.txt-t lássa!
Ennek okán a C forrása a következőre módosult:
teszt.c
Kód: Egész kijelölése
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <string.h>
#include <limits.h>
#include <libgen.h>
#define MAXC 1024 /* if you need a constant, #define one (or more) */
#define NPTRS 2 /* initial no. of pointers to allocate (lines) */
int main (int argc, char **argv) {
/*
char *symlinkpath = "kacsa.txt";
char actualpath [PATH_MAX+1];
char *ptr;
ptr = realpath(symlinkpath, actualpath);
*/
char datadir[PATH_MAX];
strncpy(datadir, argv[0], sizeof(datadir));
dirname(datadir);
strncat(datadir, "/kacsa.txt", sizeof(datadir));
int found = 0;
char *p = strrchr(argv[1], '.');
if (p){
char buf[MAXC], /* fixed buffer to read each line */
**lines = NULL; /* pointer to pointer to hold collection of lines */
size_t nptrs = NPTRS, /* number of pointers available */
used = 0; /* number of pointers used */
/* use filename provided as 1st argument (stdin by default) */
FILE *fp = argc > 1 ? fopen (datadir, "r") : stdin;
if (!fp) { /* validate file open for reading */
printf("%s\n", "kacsa.txt needed next to this binary: 1st line: PATH program, 2nd line: FULLPATH program!");
perror ("file open failed");
return 1;
}
/* allocate/validate block holding initial nptrs pointers */
if ((lines = malloc (nptrs * sizeof *lines)) == NULL) {
perror ("malloc-lines");
exit (EXIT_FAILURE);
}
while (fgets (buf, MAXC, fp)) { /* read each line into buf */
size_t len;
buf[(len = strcspn (buf, "\n"))] = 0; /* trim \n, save length */
if (used == nptrs) { /* check if realloc of lines needed */
/* always realloc using temporary pointer (doubling no. of pointers) */
void *tmp = realloc (lines, (2 * nptrs) * sizeof *lines);
if (!tmp) { /* validate reallocation */
perror ("realloc-lines");
break; /* don't exit, lines still good */
}
lines = tmp; /* assign reallocated block to lines */
nptrs *= 2; /* update no. of pointers allocatd */
/* (optionally) zero all newly allocated memory here */
}
/* allocate/validate storage for line */
if (!(lines[used] = malloc (len + 1))) {
perror ("malloc-lines[used]");
break;
}
memcpy (lines[used], buf, len + 1); /* copy line from buf to lines[used] */
used += 1; /* increment used pointer count */
}
/* (optionally) realloc to 'used' pointers to size no. of pointers exactly here */
if (fp != stdin) /* close file if not stdin */
fclose (fp);
/* use lines as needed (simply outputting here) */
/*
for (size_t i = 0; i < used; i++) {
printf ("line[%3zu] : %s\n", i, lines[i]);
free (lines[i]);
}
*/
//printf("%d\n",found);
if(strcmp(p, ".m3u") == 0 || strcmp(p, ".m3u8") == 0 || strcmp(p, ".xspf") == 0){
found = 1;
printf("%d\n",found);
} else {
found = 0;
printf("%d\n",found);
}
if(found == 1){
//printf("%s\n", lines[0]);
char *programName = lines[0];
char *arg1 = "";
execlp(programName, programName, argv[1], NULL);
} else {
char *binaryPath = lines[1];
char *arg1i = "";
execl(binaryPath, binaryPath, argv[1], NULL);
}
free (lines); /* free pointers when done */
}
// free(actualpath);
return 0;
}
Kód: Egész kijelölése
gcc teszt.c -o teszt
Kód: Egész kijelölése
fofi8
/root/my-applications/bin/gui_mpv
Re: fordítás
Pár gondolat a 6.3.7 és más kernelek fordításához:
- nagy az eltérés a menuconfig-ban pl.: a most aktuális legfrissebb
általam lefordított 4.19.285 illetve 5.10.183 és 6.3.7 kernelek esetében.
- kiemelném, hogy az eddig aktuális fordítói környezet a nemzetközi puppy fejlesztők érdeme, nélkülük nem tudnék én se haladni.
- amikor a mitigations-t veszem alapul a fentebb említett 3 kernel esetében teljesen máshol szerepelnek többé vagy kevésbé opcionálhatók is ráadásul, viszont a kisebb verziójúak cserébe meghajtják a régebbi hardvereket.
- nincs univerzális kernel: függ a géptől, a gép további hardvereitől, az uefitől a biostól és a már híres-hirhedt glibc - gcc párostól! Nem véletlen, hogy az AppImageknél is feltüntetik, mely glibc alatt vagy -hoz készült. Még kísérletezés alatt egy nagyon nagy huge-zen kernel, de a tapasztalat az, hogy minél több dolgot fordítok bele annál specifikusabb lesz annak dacára, hogy pont fordítva kéne lennie.
A 6.3.7 kernel mellett a másik két fordított kernel szintúgy megtalálható a hozzászólás aláírásomban linkelt Google Drive linken a kernel mappában. Az fdrv-k a 6.3.7 standard illetve symlinked mappáiból eredeztethetők - letölthetők, külön nem duplikálom őket méretükre tekintettel. A mellékelt kernel források is igazítva a symlinked mappákon belül.
Egyelőre ennyi.
- nagy az eltérés a menuconfig-ban pl.: a most aktuális legfrissebb
általam lefordított 4.19.285 illetve 5.10.183 és 6.3.7 kernelek esetében.
- kiemelném, hogy az eddig aktuális fordítói környezet a nemzetközi puppy fejlesztők érdeme, nélkülük nem tudnék én se haladni.
- amikor a mitigations-t veszem alapul a fentebb említett 3 kernel esetében teljesen máshol szerepelnek többé vagy kevésbé opcionálhatók is ráadásul, viszont a kisebb verziójúak cserébe meghajtják a régebbi hardvereket.
- nincs univerzális kernel: függ a géptől, a gép további hardvereitől, az uefitől a biostól és a már híres-hirhedt glibc - gcc párostól! Nem véletlen, hogy az AppImageknél is feltüntetik, mely glibc alatt vagy -hoz készült. Még kísérletezés alatt egy nagyon nagy huge-zen kernel, de a tapasztalat az, hogy minél több dolgot fordítok bele annál specifikusabb lesz annak dacára, hogy pont fordítva kéne lennie.
A 6.3.7 kernel mellett a másik két fordított kernel szintúgy megtalálható a hozzászólás aláírásomban linkelt Google Drive linken a kernel mappában. Az fdrv-k a 6.3.7 standard illetve symlinked mappáiból eredeztethetők - letölthetők, külön nem duplikálom őket méretükre tekintettel. A mellékelt kernel források is igazítva a symlinked mappákon belül.
Egyelőre ennyi.